package net.duohuo.dh_ioctest;

import net.duohuo.dh.ioc.Instance.InstanceScope;
import net.duohuo.dh.ioc.Instance.PerpareAction;
import net.duohuo.dh.ioc.Ioc;
import net.duohuo.dh_ioctest.dialog.DialogImpl;
import net.duohuo.dh_ioctest.dialog.IDialog;
import android.app.Application;



public class DemoApplication extends Application {

	@Override
	public void onCreate() {
		super.onCreate();
		Ioc.initApplication(this);
		/***** 下面是测试的对象相互依赖的注入问题与配置无关 ******/

		// 这是使用名字配置的方法,这样可以通过名字获取对象,使用不多
		Ioc.bind(DialogImpl.class).to(IDialog.class)
				.scope(InstanceScope.SCOPE_SINGLETON);

		Ioc.bind(TestManagerMM.class).name("testmm")
				.scope(InstanceScope.SCOPE_SINGLETON);

		// 这个测试作用域InstanceScope.SCOPE_PROTOTYPE
		Ioc.bind(TestDateHelper.class).to(TestDateHelper.class)
				// 这种作用域获取的每个对象都是独立的对象
				.scope(InstanceScope.SCOPE_PROTOTYPE)
				.perpare(new PerpareAction() {
					// 同时测试初始化后的回调
					@Override
					public void perpare(Object obj) {
						// 在初始化完成后回调,当然在InjectFields接口中injected也有回调
						TestDateHelper helper = (TestDateHelper) obj;
						helper.setName("我是在初始化是提供名字的");
					}
				});
	}

}
